/**
 *
 * [getObjKey 通过键值获取键名]
 * @param  {[Object]} obj   [需要查询的对象]
 * @param  {[All]}    value [键值]
 * @return {[Array]}        [匹配的键名数组]
 */
window.getObjKey=function(obj,value){
    var res=[];
    for(var k in obj){
        console.log(k)
        if(value==obj[k])res.push(k)
    }
    return res;
}

/**
 * [getMousePos 获取鼠标坐标]
 * @param  {[Event]} event [Event事件对象]
 * @return {[Object]}      [{x:水平坐标，y:垂直坐标}]
 */
window.getMousePos=function(event){
    var e = event||window.event;
    if(e.changedTouches)e=e.changedTouches[0];
    return{
        x:e.clientX+document.body.scrollLeft + document.documentElement.scrollLeft,
        y:e.clientY+document.body.scrollTop + document.documentElement.scrollTop
    }
}

/**
 * [clone 深度复制对象、数组]
 * @param {[Object/Array]} Obj [需要复制的对象、数组]
 * @return {[Object/Array]} [复制的对象、数组]
 */
window.clone=function(Obj){
    var buf;
    if (Obj instanceof Array) {
        buf = [];  // 创建一个空的数组
        var i = Obj.length;
        while (i--) {
            buf[i] = clone(Obj[i]);
        }
        return buf;
    } else if (Obj instanceof Object){
        buf = {};  // 创建一个空对象
        for (var k in Obj) {  // 为这个对象添加新的属性
            buf[k] = clone(Obj[k]);
        }
        return buf;
    }else{
        return Obj;
    }
}
window.objLen=function(obj){
    var num=0;
    for(var i in obj)num++;
    return num;
}



window._dragObj=null;
/**
 * [drag description]
 * @param  {[type]} obj [需要拖动的html元素对象]
 * @param  {[type]} dragObj [触发拖动的html元素对象]
 */
window.drag=function(obj,dragObj){
    var selfElement=obj;
    if(selfElement._isdragInit==true)return;
    selfElement._isdragInit=true;
    if(!dragObj)dragObj=obj;
    if(obj.css('position')=='static')selfElement.style.position='relative';
    if(!obj.css('left'))selfElement.style.left=0;
    if(!obj.css('top'))selfElement.style.top=0;
    dragObj.bind('mousedown',_down).bind('mouseup',_up);
    function _down(event){
        _dragObj=selfElement;
        selfElement._ismove=true;
        selfElement._offset=getMousePos(event);
        selfElement._leftTop=[obj.css('left'),obj.css('top')];
    }

    function _up(event){
        event.stopPropagation();
        selfElement._ismove=false;
    }

    //禁止拖动
    selfElement.undrag=function(){
        dragObj.bind('mousedown',_down);
        dragObj.bind('mouseup',_up);
        selfElement.undrag=null;
    }

    if(!_dragObj){
        _dragObj=true;
        document.onmousemove=function(event){
            if(!_dragObj)return;
            var self=_dragObj;
            if(self._ismove){
                var xy=getMousePos(event);
                var x=self._leftTop[0]+(xy.x-self._offset.x);
                var y=self._leftTop[1]+(xy.y-self._offset.y);
                if(!self.isDisabedDragLeft && x>0 && x+self.offset().width*0.2<document.documentElement.clientWidth){
                    self.style.left=x+"px";
                }
                if(!self.isDisabedDragTop && y>0 && y+self.offset().height*0.2<document.documentElement.clientHeight){
                    self.style.top=y+"px";
                }
            }
        }

        document.onmouseup=function(event){
            if(_dragObj && _dragObj!=true)_dragObj._ismove=false;
        }
    }
    //return obj;
}


/**
 * 获取或设置样式
 * @param name需要获取值的样式名或以键值对形式设置样式的对象
 * @param value 当name为字符串时为需要设置的值，其它情况无效
 * @returns {*}返回样式值或当前元素
 */
Element.prototype.css=function(name,value){
    if(typeof name=='object'){
        for(var i in name)this.style[i]=name[i];
        return this;
    }

    if(value!=undefined){
        this.style[name]=value;
        return this;
    }

    var v;
    if(window.getComputedStyle) {
        v=window.getComputedStyle(this, null)[name];//非IE
    }else{
        v=this.currentStyle[name];//IE
    }
    if("left,right,width,height,top,bottom".search(name)!=-1){
        return parseFloat(v);
    }
    return v;
}
/**
 * 事件绑定
 * @param type 事件名
 * @param handle 回调函数
 * @returns {Element}返回当前元素
 */
Element.prototype.bind=function(type,handle){
    try{
        this.addEventListener(type,handle);
    }catch(e){
        try{
            this.attachEvent('on' + type,handle);
        }catch(e){
            this['on' + type] = handle;
        }
    }
    return this;
}

/**
 * 获取元素相对页面左上角的位置
 * @returns {{top: number, bottom: Number, left: number, right: Number, width: (Number|number), height: (Number|number)}}
 */
Element.prototype.offset=function(){
    var  xy = this.getBoundingClientRect();
    var arr={
        top:xy.top-document.documentElement.clientTop+document.documentElement.scrollTop,//document.documentElement.clientTop 在IE67中始终为2，其他浏览器为0
        bottom:xy.bottom,
        left:xy.left-document.documentElement.clientLeft+document.documentElement.scrollLeft,//document.documentElement.clientLeft 在IE67中始终为2，其他高级点的浏览器为0
        right:xy.right,
        width:xy.width||right - left, //IE67不存在width 使用right - left获得
        height:xy.height||bottom - top
    }
    return arr;
}

/**
 * IEVersion [ie版本号，大于11时不是ie浏览器]
 */

window.IEVersion=(function(){
    var version;
    if(navigator.userAgent.indexOf("MSIE")>0){
        var v=navigator.appVersion;
        if(v.indexOf('MSIE 5')>0){
            version=5;
        }else if(v.indexOf('MSIE 6')>0){
            version=6;
        }else if(v.indexOf('MSIE 7')>0){
            version=7;
        }else if(v.indexOf('MSIE 8')>0){
            version=8;
        }else if(v.indexOf('MSIE 9')>0){
            version=9;
        }else if(v.indexOf('MSIE 10')>0){
            version=10;
        }else if(v.indexOf('MSIE 11')>0){
            version=11;
        }else{
            version=20;
        }
    }else{
        version=20;
    }
    return version;
})();

/**
 * ie版本小于9时提醒升级浏览器
 */
if(window.IEVersion<9){
    document.body.innerHTML+='<div style="background:#f6f5b4;width: 100%;height:100%;position:fixed;left:0;top:0">\n' +
        '    <div style="width: 500px;height:200px;left:50%;top:50%;position:absolute;margin:-130px 0 0 -250px;text-align:center;">\n' +
        '        <div style="font-size: 13px;color:#4f4f4f;margin:0 0 30px 0;">您的浏览器版本过低，可能导致网站不能正常访问，请使用以下浏览器</div>\n' +
        '        <img src="" alt="">\n' +
        '    </div>\n' +
        '</div>';
}
